동일형성의 본질
동일형성 언어: 내부 표현 방식이 언어 자체에 의해 표현되는 언어. 엘릭서에서는 소스 코드가 단순한 텍스트만이 아니라, '추상 구문 트리(АСТ)'라고 알려진 중첩된 데이터 구조이다. 추상 구문 트리(АСТ).
1. 표현의 논리적 규칙
엘릭서는 기본 리터럴을 스스로로 표현함으로써 АСТ를 단순화한다. 원자, 숫자, 리스트(키워드 리스트 포함), 바이너리, 두 요소로 구성된 튜플은 복잡한 래핑 없이 내부적으로 표현된다.
iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binaries"
"binaries"
[do: 1]
iex> quote do: "binaries"
"binaries"
2. АСТ 튜플 구조
대부분의 코드 변환은 세 요소로 구성된 튜플을 생성한다: {함수명, 메타데이터, 인수}. 예를 들어, 함수 호출인 1 + 2 은 {:+, [line: 1], [1, 2]}. 이 구조 덕분에 언어는 코드를 데이터로 취급할 수 있다.
3. 매크로: 실행 지연
매크로는 "프로그램의 내부 표현에 코드를 다시 삽입함으로써 절의 실행을 지연시키는 방법"이다. 일반적인 함수는 매개변수를 호출하기 전에 평가하지만, 매크로는 이전에 호출하는 동안 매크로는 원시 АСТ을 받으며 컴파일 전에 로직을 삽입할 수 있게 한다.
$$\text{소스 코드} \xrightarrow{\text{Quote}} \text{АСТ 튜플} \xrightarrow{\text{매크로}} \text{변환된 АСТ}$$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>